package com.qdlc.p2p.biz.service;

import java.util.List;

import com.qdlc.p2p.biz.tpp.model.SinaCollectTrade;
import com.qdlc.p2p.biz.tpp.model.SinaPayTrade;
import com.qdlc.p2p.common.constant.Summary;
import com.qdlc.p2p.dal.dto.TppTradeLog;

/**
 * 第三方 代收/代付  交易
 *
 * @author zlhx
 * @version 2.0
 * @date 2015年8月13日 下午4:25:12
 */
public interface TppTradeService {

    /**
     * 保存
     *
     * @param tppTradeLog
     * @param
     */
    void save(TppTradeLog tppTradeLog);

    /**
     * 修改
     *
     * @param tppTradeLog
     */
    void update(TppTradeLog tppTradeLog);

    /**
     * 根据 订单号查询 交易记录
     *
     * @param orderNo
     * @param
     * @return
     */
    TppTradeLog find(String orderNo);

    /**
     * 根据 订单号查询 交易记录
     *
     * @param borrowRepaymentId
     * @param serviceType
     * @param tradeType
     * @return
     */
    List<TppTradeLog> find(long borrowRepaymentId, String serviceType, String tradeType);

    /**
     * 根据 代收/代付交易记录对象执行 代收方法，并插入代收记录
     *
     * @param tppTradeLog
     * @param
     * @return
     */
    SinaCollectTrade collTrade(TppTradeLog tppTradeLog);

    /**
     * 根据 代收/代付交易记录对象执行 代收方法，并插入代收记录
     *
     * @param tppTradeLog
     * @param
     * @return
     */
    SinaCollectTrade collTrade(TppTradeLog tppTradeLog, String summary);

    /**
     * 根据 代收/代付交易记录对象执行 代付方法，并插入代付记录
     *
     * @param tppTradeLog
     * @return
     */
    SinaPayTrade payTrade(TppTradeLog tppTradeLog);

    void collTrade(TppTradeLog tppTradeLog, Summary summary, String notifyUrl);

    /**
     * <p>更新交易记录</p>
     *
     * @param tppTradeLog   交易记录
     * @param depositStatus
     * @param remark
     * @author Kaiju Zhao 2016年2月26日 下午7:43:03
     * @modificationHistory=========================逻辑或功能性重大变更记录
     * @modify by user: {修改人} 2016年2月26日 下午7:43:03
     * @modify by reason:{原因}
     */
    void updateTradeLog(TppTradeLog tppTradeLog, String depositStatus, String remark);
}
